// 关于用户模块的 先初始化一个空模块,后期自己写
import { reqLogin, reqGetUserInfo, reqGetUserDetailById } from '@/api/user'
import { setToken, getToken, removeToken } from '@/utils/auth'
export default {
  state: {
    token: getToken() || '', // 优先从本地获取 获取不到给''
    userInfo: {} // 用户信息
  },
  mutations: {
    // 存储token
    setToken(state, token) {
      // 存vuex
      state.token = token
      // 存cookie
      setToken(token)
    },
    // 设置用户信息
    setUserInfo(state, info) {
      state.userInfo = info
    },
    // 清除token vuex+cookie
    removeToken(state) {
      state.token = ''
      removeToken()
    },
    // 清除个人信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 发送登录的action
    async login(context, loginform) {
      const data = await reqLogin(loginform) // await 拿的是成功结果还是失败的结果
      // console.log(data) // data中success true false 是判断成功还是失败
      if (data.success) {
        context.commit('setToken', data.data)
      }
      return data // 将data return, 是要在页面组件中做消息提示
    },
    // 获取用户资料的action
    async getUserInfo(context) {
      const data = await reqGetUserInfo() // 获取用户简单信息, 没有头像
      const data2 = await reqGetUserDetailById(data.data.userId) // 获取带头像的用户信息
      const fullUserInfo = { ...data.data, ...data2.data } // 合并个人信息
      context.commit('setUserInfo', fullUserInfo)
    },
    // 退出的action
    logout(context) {
      context.commit('removeToken')
      context.commit('removeUserInfo')
    }
  },
  namespaced: true
}
